package com.mars.foodserver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mars.foodserver.entity.Food;
import com.mars.foodserver.request.FoodRequest;
import com.mars.foodserver.response.FoodResponse;
import com.mars.foodserver.response.base.PageInfo;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author wq
 * @since 2021-07-19
 */
public interface IFoodService extends IService<Food> {

    /**
     * 分页
     *
     * @param request 请求参数
     * @return PageInfo<Student>
     */
    PageInfo<FoodResponse> page(FoodRequest request);

    /**
     * 查询推荐菜品
     *
     * @param request 请求参数
     * @return List<FoodResponse>
     */
    List<FoodResponse> getRecommend(FoodRequest request);

    /**
     * 添加
     *
     * @param request 请求参数
     */
    void add(FoodRequest request);


    /**
     * 发布食谱
     *
     * @param request FoodRequest
     */
    void publish(Integer userId, FoodRequest request);


    /**
     * 我的食谱
     *
     * @param userId 用户ID
     * @return List<Food>
     */
    List<Food> mineFoods(Integer userId);


    /**
     * 批量查询
     *
     * @param ids IDS
     * @return ist<Food>
     */
    List<Food> selectBatch(List<Integer> ids);

    /**
     * 修改
     *
     * @param request 请求参数
     */
    void update(FoodRequest request);

    /**
     * 更新状态
     */
    void updateStatusDown(Integer foodId);

    /**
     * 删除
     *
     * @param id ID
     */
    void delete(Integer id);

    /**
     * 详情
     *
     * @param id ID
     * @return Food
     */
    Food detail(Integer id);


    /**
     * 详情美食
     *
     * @param userId 用户ID
     * @param id     ID
     * @return FoodResponse
     */
    FoodResponse acquireDetail(Integer userId, Integer id);


    /**
     * 分类详情
     *
     * @param foodCategory 美食分类ID
     * @return List<Food>
     */
    List<Food> categoryDetailList(Integer foodCategory);

    /**
     * 修改状态
     *
     * @param id          id
     * @param isRecommend isRecommend
     */
    void updateStatus(Integer id, Integer isRecommend);
}
